package br.unisinos.pdm.dao;

import java.util.ArrayList;
import java.util.List;

import br.unisinos.pdm.model.LivroOferecido;
import br.unisinos.pdm.model.Usuario;

import com.db4o.ObjectSet;
import com.db4o.internal.IoAdaptedObjectContainer;

/**
 * Classe de persistencia a banco de dados 
 */
public class UsuarioDAO extends GenericDAO {
	
	public UsuarioDAO(IoAdaptedObjectContainer db) {
		super(db);
	}

	public Usuario findUsuario(String login) {
		Usuario usuario = new Usuario();
		usuario.setLogin(login);
		@SuppressWarnings("unchecked")
		ObjectSet<Usuario> result = db.queryByExample(usuario);
		
		if (result != null && !result.isEmpty()) {
			return result.get(0);
		} else {
			return null;
		}
	}
	
	public Boolean isValid(String login, String password) {
		
		Usuario usuario = new Usuario();
		usuario.setLogin(login);
		usuario.setPassword(password);
		@SuppressWarnings("unchecked")
		ObjectSet<Usuario> result = db.queryByExample(usuario);
		
		if (result != null && !result.isEmpty()) {
			return true;
		} else {
			return false;
		}
	}
	
	public Usuario save(String login, String password, String email) {
		Usuario usuario = new Usuario();
		usuario.setLogin(login);
		usuario.setPassword(password);
		usuario.setEmail(email);
		save(usuario);
		return usuario;
	}
	
	public List<Usuario> findLivrosOferecidos(String nome) {
		Usuario usuario = new Usuario();
		
		LivroOferecido livroOferecido = new LivroOferecido();
		livroOferecido.setNome(nome);
		List<LivroOferecido> livroOferecidoList = new ArrayList<LivroOferecido>();
		livroOferecidoList.add(livroOferecido);
		
		usuario.setLivroOferecidoList(livroOferecidoList);
		
		@SuppressWarnings("unchecked")
		ObjectSet<Usuario> result = db.queryByExample(usuario);
		
		return result;
	}
	
}
